function onloadJS () {
       
    arrPodRazdel = {};
       
    zoomChanged = false;
    centerChanged = true;
    
    var lat = storage.map.centerLat;
    var lng = storage.map.centerLng;
    var zoom = storage.map.zoom;

    var myOptions = {
        center: new google.maps.LatLng(lat, lng),
        zoom: zoom,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

    google.maps.event.addListener(map, 'zoom_changed', function(event){  

        if (zoomChanged) {

            
            
            storage.map.zoom = map.getZoom();

            serverFiltrQuery();
        }

    })
    
    
    google.maps.event.addListener(map, 'dragend', function(event){  

        if (centerChanged) {

            
          //  var center = map.getCenter();
         //   storage.map.centerLat = center.lat();
         //   storage.map.centerLng = center.lng();

            serverFiltrQuery();
        }

    })
   
    
    

    updateMap();
    
    selectAllSpec();
    serverFiltrQuery()
       


    
}


function updateMap() {
    
                
        if (typeof markerCluster != 'undefined') {
           markerCluster.clearMarkers();
           
           delete markerCluster;
           
           markersOn.length = 0;
        }
        
        var lat = storage.map.centerLat;
        var lng = storage.map.centerLng;
        var zoom = parseInt(storage.map.zoom);
        
        var latLng = new google.maps.LatLng(lat, lng);
        
        zoomChanged = false;
        map.setCenter(latLng);
        zoomChanged = true;
        
        zoomChanged = false;
        map.setZoom(zoom);
         zoomChanged = true;
    
 
        /*
        *в процессе генерации страницы php скриптом, в ней интегрируется массив с координатами Зданий, которые необходимо отобразить на странице. Массив с названием coord[lat_1: 343, lng_1: 34, lat_2:3434...];
        **/
       

        for (var key in storage.map.markersOut) {

            var z = storage.map.markersOut[key];

            var lat = z['lat'];
            var lng = z['lng'];
            var name = z['name'];
            var id = z['id'];

            var latLng = new google.maps.LatLng(lat, lng);
            
            var marker = new google.maps.Marker({ //добавляем новый маркер с координатами щелчка
                position: latLng,
                map : map,
                icon : W_IMAGES + 'user_mark.png'
            }); 

            
            markersOn.push(marker);
            
            /*применям замыкания для назначения каждому обработчику свой маркер*/

            (function(latLng, id, name, marker, windowArr){ 

                google.maps.event.addListener(marker, 'mouseover', function(event){           

                    if ( typeof infoWindow != 'undefined')
                        infoWindow.close();

                            infoWindow = new google.maps.InfoWindow({ 
                                position: latLng, 
                                content: name + '<BR> <a href = "' + W_ABSPATH +'bc/' + id +'">смотреть здание</a>',
                                map: map
                            }); 
                    })
            })(latLng, id, name, marker);
            

            

        }
        
       markerCluster = new MarkerClusterer(map, markersOn);

}

function readAllFields() {
    
    
    
    
}

function handlerFiltChanges () {
               
    readAllFields();         
    serverFiltrQuery();        

}

function serverFiltrQuery(){
        
storage.map.zoom = map.getZoom();

var center = map.getCenter();
storage.map.centerLat = center.lat();
storage.map.centerLng = center.lng();

if (typeof arrPodRazdel != 'undefined')
    storage.search.arrPodRazdel = arrPodRazdel;
else
    storage.search.arrPodRazdel = {};


if ($('#searchWord').length > 0)
    storage.search.searchWord = document.getElementById('searchWord').value;
else
    storage.search.searchWord = '';

if ($('#objSearch').length > 0)
    storage.search.aim = document.getElementById('objSearch').value;
else
    storage.search.aim = 1;


if ($('#freeOffice').length > 0)
    storage.search.freeOffice = document.getElementById('freeOffice').checked;
else
    storage.search.freeOffice = false;

if ($('#freeVacancy').length > 0)
    storage.search.freeVacancy = document.getElementById('freeVacancy').checked;
else
    storage.search.freeVacancy = false;


if ($('.podpodRazdel').length > 0) {
    var elements= document.getElementsByClassName('podpodRazdel');

    var specialization = [0];
    var i = 0;
    for(var key in elements){
        if (elements[key].checked){
            var x = elements[key].id;

            if (typeof x != 'undefined')
                specialization[i] = x.substr(3,x.length);

            i++;
        }
    }
    
    storage.search.specialization = specialization;
        
} else 
    storage.search.specialization = {};


//*****

//****
if ($('.podpodRazdel_ins').length > 0) {
    var elements= document.getElementsByClassName('podpodRazdel_ins');

    var specialization_ins = [0];
    var i = 0;
    for(var key in elements){
        if (elements[key].checked){
            var x = elements[key].id;

            if (typeof x != 'undefined')
                specialization_ins[i] = x.substr(3,x.length);

            i++;
        }
    }
    storage.search.specialization_ins = specialization_ins;
} else
    storage.search.specialization_ins = {};
//*****


if ($('#salaryRateFrom').length > 0)
    storage.search.salaryFrom = document.getElementById('salaryRateFrom').value;
else
    storage.search.salaryFrom = 0;

if ($('#experienceRateFrom').length > 0)
    storage.search.experienceFrom = document.getElementById('experienceRateFrom').value;
else
    storage.search.experienceFrom = 0;

if ($('#ageRateFrom').length > 0)
    storage.search.ageFrom = document.getElementById('ageRateFrom').value;
else
    storage.search.ageFrom = 0;

if ($('#ageRateUnder').length > 0)
    storage.search.ageUnder = document.getElementById('ageRateUnder').value;
else
    storage.search.ageUnder = 100;

    if (typeof (showRazdel_var) != 'undefined') {
        if (showRazdel_var)
            storage.search.showSpecForm = true;
        else 
            storage.search.showSpecForm = false;
    } else
        storage.search.showSpecForm = false;

    
    

            var dataSend = {
                        query : 'getFiltr',
                        storage : storage
                       
            }
           
           
            $.post(
                W_AJAX + "controllers/controllerCompany.php",
                {
                    dataSend : dataSend
                },
                function(serverAnswer){
                    
                        storage = serverAnswer;
                        
                        document.getElementById('filtr').innerHTML = ''; 
                        document.getElementById('filtr').innerHTML = storage.message;
                        eval(storage.script);
                        storage.message = '';
                                             
                        updateMap();
                    },
                'json'
            ); 
    
}        



//***
function changeCity () {
    
                /*
        *автоподгрузчик городов
        **/
        $("#cityCountry").autocomplete(W_AJAX + "city/getCity.php", {
            delay:10,
            minChars:1,
            matchSubset:1,
            autoFill:true,
            matchContains:1,
            cacheLength:10,
            selectFirst:true,
            maxItemsToShow:10
        });
    
    
    $('#changeCity').show();
    
}

function choosenCity () {
    
        var error = false;

            /*
            *получаем данные о городе, стране и адресе из введенных форм на страничке 
            */
            var cityCountry = document.getElementById('cityCountry').value; // формат :город(страна). Пр-р: "Москва(Россия)"

            /*
            *парсим город(страна) на отдельные составляющие : город и страна
            **/
            cityName = '';
            countryName = '';
            var myRe = /(^[ 0-9А-Яа-я_-]+)(\(([ 0-9А-Яа-я_-]+)\))?/g;//регулярка для вытаскивания имен города и страны
            if ((myArray = myRe.exec(cityCountry)) != null) {
                cityName = myArray[1];
                cityName = TrimStr(cityName);
                countryName = myArray[3];
                countryName = TrimStr(countryName);
            }

            /*
            *в случае, если пользователем было некорректно введено значение в поле "город", то выводим соответсвующую ошибку и дальше не продолжаем выполнение скрипта
            **/
            if((cityName == "") || (countryName == "")){
                alert("Вы некорректно ввели ");
            } else {            
               storage.ourGeo.ourCity = cityName;
               storage.ourGeo.ourCountry = countryName;            
               $('#changeCity').hide();
               
               /*
                *получаем координаты города
                **/
               var dataSend = {
                        query : 'getCoordCity',
                        city : storage.ourGeo.ourCity,
                        country : storage.ourGeo.ourCountry
                    }    
                    
            $.post(
                W_AJAX + "controllers/controllerCompany.php",
                {
                    dataSend : dataSend
                },
                function(answer){
                    
                        if (!answer.error) {
                            storage.map.centerLat = answer.lat;
                            storage.map.centerLng = answer.lng;
                            
                            var latLng = new google.maps.LatLng(answer.lat, answer.lng);
                            
                            zoomChanged = false;
                            map.setCenter(latLng);
                            zoomChanged = true;

//                            zoomChanged = false;
//                            map.setZoom(zoom);
//                            zoomChanged = true;
                            
                            serverFiltrQuery();
                            
                            
                        } else {
                            alert('Такого города нет в БД');
                        }
                    
                    },
                'json'
            ); 
               
               
    }
}

function handlerFieldChanges() {
    
    
}

function showPodRazdel(numPodRazdel){
    if (typeof arrPodRazdel[numPodRazdel] == 'undefined')
        arrPodRazdel[numPodRazdel] = false;
    
        if (arrPodRazdel[numPodRazdel])
            hidePodRazdel(numPodRazdel);
        else{
            arrPodRazdel[numPodRazdel] = true;
        
            var elem = "podRazdel_" + numPodRazdel;
            var options = {};
            $("#"+elem).show( "blind", options, 500, function(){}); 
        }
}

function hidePodRazdel(numPodRazdel){
    var elem = "podRazdel_" + numPodRazdel;
    var options = {};
    $("#"+elem).hide( "blind", options, 500, function(){}); 
    arrPodRazdel[numPodRazdel] = false;
    console.log(arrPodRazdel);
}

function showRazdel() {
    

    if (typeof (showRazdel_var) != 'undefined') {
        if (showRazdel_var)
            showRazdel_var = false;
        else 
            showRazdel_var = true;
    } else
        showRazdel_var = true;

    var options = {};
    
    if (showRazdel_var)
        $("#razdel").show( "blind", options, 500, function(){}); 
    else
        $("#razdel").hide( "blind", options, 500, function(){}); 

}

function clearAllSpec() {

    var elements = document.getElementsByClassName('podpodRazdel');
    
    for (var key in elements)
        elements[key].checked = 0;
    
    serverFiltrQuery();

}

function selectAllSpec() { 

    var elements = document.getElementsByClassName('podpodRazdel');

    for (var key in elements)
        elements[key].checked = 1;
    
    serverFiltrQuery();
   
}

function goPage(page) {
    storage.search.page = page;
    serverFiltrQuery();
}

function selectAllSpec_ins() { 

    var elements = document.getElementsByClassName('podpodRazdel_ins');

    for (var key in elements)
        elements[key].checked = 1;
    
    serverFiltrQuery();
   
}

function clearAllSpec_ins() {

    var elements = document.getElementsByClassName('podpodRazdel_ins');
    
    for (var key in elements)
        elements[key].checked = 0;
    
    serverFiltrQuery();

}